package com.pap.datas.exception;

import com.pap.obj.vo.response.ResponseVO;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Auther: alexgaoyh
 * @Date: 2018/11/28 17:07
 * @Description:
 */
@ControllerAdvice//所谓加强Controller就是@ControllerAdvice注解，有这个注解的类中的方法的某些注解会应用到所有的Controller里，其中就包括@ExceptionHandler注解。
@ResponseBody//REST风格接口
public class GlobleExceptionHandler {

    /**
     * 	拦截MethodArgumentNotValidException，取出其中的错误信息，拼装成自己项目中的返回对象返回即可
     * @param e
     * @return
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseVO bindException(MethodArgumentNotValidException e) {
        BindingResult bindingResult = e.getBindingResult();

        StringBuilder errorMesssage = new StringBuilder();

        for (FieldError fieldError : bindingResult.getFieldErrors()) {
            errorMesssage.append(fieldError.getDefaultMessage() + ", ");
        }

        return ResponseVO.validfail(errorMesssage.toString());
    }

}